package com.example;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 * 说明: 修饰注解的注解称之为元注解（4个元注解）
 * @Target(ElementType.TYPE) 该注解对类有效
 * @Retention(RetentionPolicy.RUNTIME) 表示运行期有效 整个周期
 * @Documented 动态生成文档信息
 * @Inherited 该注解是否允许被继承 允许
 *
 *
 * @ComponentScan    @ComponentScan(
 *     excludeFilters = {@Filter(               exclude  是排除之外的意思
 *     type = FilterType.CUSTOM,
 *     classes = {TypeExcludeFilter.class}
 * )
 * 作用:由于SpringBoot需要自动加载的项很多,在这里用反向的方式排除某些加载项,保证后续代码不冲突.
 *
 *
 *  通过注解得知:主启动类本身就是一个配置类.
 * @SpringBootConfiguration
 *
 * @EnableAutoConfiguration
 *      1、@AutoConfigurationPackage
 *          规则: 指定了springBoot启动时包扫描的路径 应该在主启动类的同包及子包中下定义.
 *      2、@Import(AutoConfigurationImportSelector.class)
 *          说明:该注解主要表示当程序启动时,springBoot内部会有多个选择器依次启动.
 *          选择器启动时会去加载指定的jar包文件.这时SpringBoot中开箱即用的功能才正式起作用.
 * */
@SpringBootApplication
public class SpringbootDemo1Application {

    public static void main(String[] args) {
        SpringApplication.run(SpringbootDemo1Application.class, args);
    }

}
